Conventional systems and methods for data tracking and storage track document versions over time (e.g., documents, distribution lists, etc.) by creating a new version record in the database for each revision made to the document. As a result, data storage requirements were significantly increased because every revision to a document resulted in a new version of the document, and all versions of the document had to be maintained in database storage.
This was especially problematic when dealing with electronic mail distribution lists because these lists were always changing. Each time a change was made to a list (e.g., member added, member deleted, etc.) a new version of the list was created such that all member records were duplicated per revision. Additional storage was required because nested lists were flattened for every stored version of the list. Furthermore, for messages including lists as recipients, all lists were recursively expanded for efficient searching of indirect recipients of a message. As a result excessive amounts of database storage were used to archive this data.
Moreover, conventional data tracking and storage also lacked storage efficient methods for tracking other time-varying properties of a document (e.g., flag states, document states, etc.) because, again, every change in a time-varying property results in a new version of the document or record. To save on storage, only the last value of such dynamic attributes of a document might be retained, and this was not a viable solution for tracking document properties over the life of a document.